﻿using System;
using Microsoft.Xna.Framework;

namespace M1Xonix
{
    /// <summary>
    /// See klass oskab luua vaenlasi ja hoida vaenlaste asukohta
    /// </summary>
    class Enemy
    {
        private static readonly Random _random = new Random();

        private int _directionX, _directionY;
        private int _lastLocationX, _lastLocationY;
        private int _locationX, _locationY;

        public Enemy(int maxX, int maxY)
        {
            _locationX = _random.Next(maxX - 3) + 2; // maxX ja maxY on ekraani laius ja kõrgus, me ei taha pätti ekraani äärele lasta
            _locationY = _random.Next(maxY - 3) + 2;
            _directionX = _random.Next(2)*2 - 1;
            _directionY = _random.Next(2) * 2 - 1;
        }

        /// <summary>
        /// liigutab vaenlast
        /// </summary>
        public void Move()
        {
            _lastLocationX = _locationX;
            _lastLocationY = _locationY;
            _locationX += _directionX;
            _locationY += _directionY;
        }

        /// <summary>
        /// liigutab vaenlase eelmisele asukohale
        /// </summary>
        public void MoveToOldLocation()
        {
            _locationX = _lastLocationX;
            _locationY = _lastLocationY;
        }

        /// <summary>
        /// muudab vaenlase liikumissuunda horisontaalsuunas
        /// </summary>
        public void ReverseDirectionX()
        {
            _directionX = -_directionX;
        }

        /// <summary>
        /// muudab vaenlase horisontaalsuunas liikumatuks
        /// </summary>
        public void DeleteDirectionX()
        {
            _directionX = 0;
        }

        /// <summary>
        /// muudab vaenlase liikumissuunda vertikaalsuunas
        /// </summary>
        public void ReverseDirectionY()
        {
            _directionY = -_directionY;
        }

        public void DeleteDirectionY()
        {
            _directionY = 0;
        }

        /// <summary>
        /// tagastab vaenlase asukoha X komponendi
        /// </summary>
        /// <returns></returns>
        public int X()
        {
            return _locationX;
        }

        /// <summary>
        /// tagastab vaenlase asukoha Y komponendi
        /// </summary>
        /// <returns></returns>
        public int Y()
        {
            return _locationY;
        }
    }
}